package cn.hl.hm.service;

import cn.hl.hm.entity.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.util.List;
import java.util.Map;

public interface OrderService {
	/**
	  * @Title: add  
	  * @Description: 添加订单
	  * @date: 2017年1月4日
	  * @author: 大和
	  * @param order
	  * @return int 
	  * @throws
	 */
	public int add(Order order);
	/**
	  * @Title: selectPrice  
	  * @Description: 查询车型-路线-当日 价格
	  * @date: 2017年1月4日
	  * @author: 大和
	  * @param id
	  * @return RouteVehiclePrice 
	  * @throws
	 */
	public RouteVehiclePrice selectPrice(Integer id);
	
	
	/**
	  * @Title: selectPrice  
	  * @Description: 查询路线公里数
	  * @date: 2017年1月4日
	  * @author: 大和
	  * @param id 车型-路线-当日 表id
	  * @return RouteVehiclePrice 
	  * @throws
	 */
	public Double selectMills(Integer id);

	/**
	  * @Title: selectMostfavorable  
	  * @Description: 查询最大优惠劵
	  * @date: 2017年1月4日
	  * @author: 大和
	  * @param map
	  * @return Coupon 
	  * @throws
	 */
	public Coupon selectMostfavorable(Map<String, String> map);
	
	/**
	  * @Title: selectDriver  
	  * @Description: 查询司机 组合
	  * @date: 2017年1月4日
	  * @author: 大和
	  * @param driver
	  * @return List<Driver> 
	  * @throws
	 */
	public List<Driver> selectDriver(Driver driver);
	
	/**
	  * @Title: selectOrder  
	  * @Description: 查询订单 组合
	  * @date: 2017年1月4日
	  * @author: 大和
	  * @param order
	  * @return List<Order> 
	  * @throws
	 */
	public List<Order> selectOrder(Order order);
	/**
	 * 
	  * @Title: updateOrderById  
	  * @Description: 更新订单
	  * @date: 2017年1月4日
	  * @author: 大和
	  * @param order
	  * @return int 
	  * @throws
	 */
	public int  updateOrderById(Order order);

	/**
	  * @Title: selectPrice  
	  * @Description: 查询车型-路线-当日 价格
	  * @date: 2017年1月4日
	  * @author: 大和
	  * @param id
	  * @return RouteVehiclePrice 
	  * @throws
	 */
	public List<RouteVehiclePrice>  selectRouteVehiclePrice(RouteVehiclePrice driver);

	/**
	 * 
	  * @Title: addOrderReview  
	  * @Description: 添加评论
	  * @date: 2017年1月4日
	  * @author: 大和
	  * @param review
	  * @return int 
	  * @throws
	 */
	public int  addOrderReview(OrderReview review);
	/**
	 * 
	  * @Title: selectOrderReview  
	  * @Description: 查询评论 组合
	  * @date: 2017年1月4日
	  * @author: 大和
	  * @param review
	  * @return List<OrderReview> 
	  * @throws
	 */
	public List<OrderReview>  selectOrderReview(OrderReview review);
	
	/**
	  * @Title: selectCoupon  
	  * @Description: 查询优惠劵
	  * @date: 2017年1月5日
	  * @author: 大和
	  * @param cp
	  * @return List<Coupon> 
	  * @throws
	 */
	public List<Coupon>  selectCoupon(Coupon cp);
	/**
	 * 
	  * @Title: updateCoupon  
	  * @Description: 更新优惠劵状态
	  * @date: 2017年1月5日
	  * @author: 大和
	  * @param cp
	  * @return int 
	  * @throws
	 */
	public int updateCoupon(Coupon cp);
	/**
	  * @Title: selectRoute  
	  * @Description: 查询路线信息
	  * @date: 2017年1月5日
	  * @author: 大和
	  * @param id
	  * @return Route 
	  * @throws
	 */
	public Route selectRoute(Integer id);
	/**
	  * @Title: selectUserSuccess  
	  * @Description: 查询用户成功单
	  * @date: 2017年1月6日
	  * @author:大和
	  * @param order
	  * @return Order   -> id属性借用为成功单数 
	  * @throws
	 */
	public Order selectUserSuccess(Order order);
	/**
	 * 
	  * @Title: selectOrderRules  
	  * @Description: 信息费规则
	  * @date: 2017年1月6日
	  * @author:大和
	  * @return OrderRules 
	  * @throws
	 */
	public OrderRules selectOrderRules( );
	
	/**
	  * @Title: selectOrderRulesById  
	  * @Description: 查询收费规则
	  * @date: 2017年1月11日
	  * @author:大和
	  * @param id
	  * @return OrderRules 
	  * @throws
	 */
	public OrderRules selectOrderRulesById(Integer id );
	/**
	  * @Title: addOrderOrderRules  
	  * @Description: 新增信息费奖励规则
	  * @date: 2017年1月10日
	  * @author:大和
	  * @return int 
	  * @throws
	 */
	public int addOrderOrderRules(OrderRules orderRules );
	
	/**
	  * @Title: selectCarType  
	  * @Description: 查询车型
	  * @date: 2017年1月10日
	  * @author:大和
	  * @param id
	  * @return VehicleType 
	  * @throws
	 */
	public VehicleType selectCarType(Integer id  );
	
	List<Order> selectOrderForH5(Order order);

	Map<String, Object> importOrderExcel(MultipartFile file);

	List<Order> selectByPrimaryKeySelective(Order record);
}
